森.林木

Google Earth Pro 无法联网 — 问题分析与解决方案

Google Earth Pro 无法联网 — 问题分析与解决方案

文档生成日期:2026-10-04
相关文件目录:C:\Users\Administrator\gost-proxy\


目录

  1. 问题现象
  2. 问题根源
  3. 核心原理
  4. 解决思路
  5. 技术实现
  6. 方案的适用范围
  7. 一键脚本说明
  8. 日常使用步骤
  9. 注意事项与故障排查
  10. 附录:文件清单与命令

一、问题现象

Google Earth Pro 启动时报两个错误:

  1. 「无法连接到登录服务器」,错误代码 c000000c
  2. 「无法连接到数据库」,提示网址 http://kh.google.com:80/ 可能无效

表现为地图一片空白,卫星影像加载不出来。


二、问题根源(逐层拆解)

第 1 层:Google 服务被墙

kh.google.com 是 Google Earth 的卫星影像数据库服务器,*.google.com 登录服务器同理,国内直连会被阻断。
但由于本机已安装代理(蚂蚁加速器)、浏览器也能访问 Google,所以问题不止于此。

第 2 层:代理开着,Google Earth 却用不上

经逐项实测排查:

验证项 结果 结论
蚂蚁 SOCKS5 代理(1080)能否连 Google ✅ 能(kh.google.com 返回 404 = 已到达服务器) 代理本身正常
蚂蚁监听的端口 仅 1080 (SOCKS5) 没有 HTTP 代理端口
系统代理设置 ProxyServer=127.0.0.1:1080,已启用 被当成 HTTP 代理登记
用 HTTP 代理协议连 1080 ❌ 失败(返回 000) 1080 只懂 SOCKS5,不懂 HTTP 代理协议

根因:蚂蚁加速器把 Windows 系统代理设成了 127.0.0.1:1080,但该端口实际是 SOCKS5 协议,而系统把它当作 HTTP 代理 使用,两种协议不匹配。


三、核心原理

原理 1:SOCKS5 代理 ≠ HTTP 代理

两者是不同的”握手语言”:

  • HTTP 代理:程序对代理发送 CONNECT kh.google.com:80 HTTP/1.1,使用 HTTP 语法。
  • SOCKS5 代理:程序与代理之间使用二进制握手协议(先协商版本/认证,再发送目标地址),与 HTTP 完全不同。

一个只开 SOCKS5 的端口(1080),若用 HTTP 代理语法与之通信,它无法理解 → 连接失败。
这解释了为何 -x http://127.0.0.1:1080 返回 000,而 --socks5 127.0.0.1:1080 成功。

原理 2:蚂蚁的”全局模式”靠系统代理实现,不是 TUN

代理软件让流量翻墙主要有两种机制:

机制 原理 哪些程序会被代理
系统代理(蚂蚁使用) 往注册表写 ProxyServer,告诉程序”把流量发给此代理” 仅主动读取系统代理、且愿意走代理的程序(如浏览器)
TUN 模式 / 虚拟网卡(Clash、v2rayN 具备) 虚拟一张网卡,在操作系统网络层劫持所有流量 所有程序,无差别

蚂蚁加速器没有 TUN 模式,其”全局模式”本质仍是系统代理。
系统代理是”请求式”的 —— 程序必须自己愿意读、愿意走才生效。

原理 3:Google Earth 不走这套系统代理

Google Earth Pro 使用自己的网络栈。它要么不读系统代理,要么即使读取也只按 HTTP 代理协议去连(而系统代理指向的 1080 是 SOCKS5,协议不匹配)。两种情况结果相同:蚂蚁的全局模式管不到 Google Earth。

一句话根因:蚂蚁只会说 SOCKS5,而 Google Earth 只会听 HTTP 代理,中间缺少翻译,双方无法通信。

原理 4:系统代理是怎么实现”流量转发”的

这里有一个常见误解需要澄清:

“系统代理”本身并不转发流量。它只是一块”告示牌”,真正转发流量的是代理服务器程序(gost、蚂蚁)。

(1) 系统代理只是一条配置

它就是注册表里的一个字符串:

1
2
ProxyEnable = 1
ProxyServer = 127.0.0.1:1088

这条配置本身不是程序、不会运行、不搬运任何数据。它的唯一作用是告诉程序:”要上网别自己直连,去找 127.0.0.1:1088 这个代理。”

(2) 一次请求的完整旅程

以浏览器/Google Earth 访问 kh.google.com 为例:

1
2
3
4
5
6
1. 程序要访问 kh.google.com
2. 程序调用 Windows 网络库(WinINet / WinHTTP)
3. 该库读取注册表,发现配了代理 127.0.0.1:1088
4. 于是库不去连 kh.google.com,而是连 127.0.0.1:1088(gost),
并告诉它:"我要访问 kh.google.com,帮我转一下"
5. gost 代替程序去连目标 → 双向搬运数据 → 返回给程序

关键在第 2~3 步:程序之所以”乖乖去找代理”,是因为它使用了 Windows 的网络库(WinINet.dll / WinHTTP.dll),而这些库被设计成会主动读取注册表里的代理配置。
这也解释了:不使用这些库、直接走原始 socket 的程序(某些游戏、命令行工具),根本不会去读注册表,也就不会走代理。

(3) 代理服务器是怎么”转发”的

真正的转发发生在代理服务器(gost / 蚂蚁)一端,分两种情况:

  • 普通 HTTP(明文):程序把整条请求发给代理(GET http://kh.google.com/ ...),代理解析出目标,代替程序去访问并回传结果,代理能看到内容。
  • HTTPS(加密,CONNECT 隧道):程序先发 CONNECT www.google.com:443,代理建立一条到目标的 TCP 隧道,之后只做字节搬运(内容加密,代理看不到)。

这个”代替你去连目标、双向搬运数据”的动作,就是转发(中继)的本质。

(4) 类比:公司前台转接电话

  • 系统代理设置 = 公司规定”所有外线先拨分机 1088(前台)” —— 这是一条规定,本身不传话。
  • gost(前台) = 真正接起电话、帮你转接的人。
  • 蚂蚁(总机) = 前台把电话转给有外线权限的总机,由它拨出境。
  • 境外节点 = 最终帮你接通对方的线路。

你能打通电话,靠的是”前台、总机”这些人(程序)在转接;而”先拨 1088”只是让你知道该找谁 —— 这就是系统代理的角色。


四、解决思路

既然问题是”蚂蚁只提供 SOCKS5,而 GE 只认 HTTP 代理”,解决办法是在中间加一个翻译官:

搭建一个本地 HTTP 代理,接收 Google Earth 的 HTTP 代理请求,翻译成 SOCKS5 后转发给蚂蚁。

这个翻译官使用 gost(GO Simple Tunnel,轻量级代理转发工具)实现。


五、技术实现

1. 用 gost 搭建”HTTP → SOCKS5”桥

1
gost -L http://127.0.0.1:1088 -F socks5://127.0.0.1:1080
  • -L http://127.0.0.1:1088:在本地 1088 端口开启一个 HTTP 代理(监听端,面向 Google Earth)
  • -F socks5://127.0.0.1:1080:将收到的流量转发给蚂蚁的 SOCKS5 1080

gost 即翻译官:左手接收 HTTP 代理请求,右手以 SOCKS5 协议转交给蚂蚁。

2. 将系统代理指向这座桥

把注册表中的系统代理从 127.0.0.1:1080(协议不匹配)改为 127.0.0.1:1088(真正的 HTTP 代理)。

3. 完整链路

1
2
3
4
5
6
7
8
9
10
Google Earth
│ (发出 HTTP 代理请求)
▼
系统 HTTP 代理 127.0.0.1:1088 ← gost 监听端(翻译官)
│ (翻译为 SOCKS5)
▼
蚂蚁加速器 SOCKS5 127.0.0.1:1080
│ (加密走代理隧道)
▼
新加坡节点 ──► Google 服务器 (kh.google.com) ✅

实测结果:通过 1088 访问 www.google.com 返回 200,kh.google.com 可达,Google Earth 正常加载。


六、方案的适用范围

本方案不是对所有程序都有效,只对”愿意读取并遵守系统代理设置”的程序有效。原因见 原理 2 与 原理 4:本方案本质仍是系统代理(请求式),而非 TUN(强制劫持)。

✅ 会走代理的程序

  • 浏览器:Chrome、Edge、Firefox(大多跟随系统代理)
  • Google Earth(已验证会读系统 HTTP 代理 —— 这正是本方案对它有效的原因)
  • 大部分 Windows 应用、Office、许多软件的更新/登录模块

❌ 不会走代理的程序/流量

  • 不读系统代理的程序:某些游戏、专用客户端、直接走原始 socket 的软件
  • 命令行工具:如 curl、git 默认不读系统代理(需单独设 http_proxy 环境变量)
  • UDP 流量:HTTP 代理只转发 TCP(HTTP/HTTPS),走 UDP 的应用(部分游戏、QUIC、视频通话)不被代理

与蚂蚁原”全局模式”的覆盖范围对比

蚂蚁原本也是系统代理方案(设了 1080),覆盖范围与现在相同,都停留在”系统代理”层面。本方案只是把那个协议对不上、无法使用的 1080,换成了真正可用的 HTTP 代理 1088。因此”读系统代理的程序”现在真能翻墙了,但覆盖面并未扩大到”所有程序”。

若需要”所有程序都走代理”

需改用 TUN 模式(虚拟网卡,无差别劫持)。蚂蚁没有 TUN,只能换客户端:
用 Clash Verge / v2rayN 导入机场订阅并开启 TUN,则所有程序(含不读系统代理的、UDP 的)自动全部走代理。前提是拥有机场订阅链接(蚂蚁为成品,通常无法导出订阅)。


七、一键脚本说明

按”手动一键、不开机自启”的要求,制作两个桌面脚本,每个 .bat 调用一个 .ps1。

开启(start-proxy.ps1)

  1. 检测 gost 是否已运行,未运行则隐藏窗口启动(幂等,重复点击不会重复启动)
  2. 将系统代理设为 127.0.0.1:1088 并启用,随后调用 wininet.dll 的 InternetSetOption 广播刷新,使系统立即感知变更

关闭(stop-proxy.ps1)

  1. 关闭系统代理
  2. 结束 gost 进程,恢复直连

编码注意事项(踩坑记录)

.ps1 脚本必须保存为 UTF-8 with BOM(文件头含 EF BB BF)。
若保存为无 BOM 的 UTF-8,Windows PowerShell 5.1 会按 GBK 读取,导致中文乱码并报 字符串缺少终止符 错误。这是中文 Windows 上编写 ps1 脚本的常见陷阱。


八、日常使用步骤

  1. 打开蚂蚁加速器,连接节点(选新加坡/香港/日本/美国等能连 Google 的节点)
  2. 双击桌面 「开启代理-用GoogleEarth.bat」(弹出黑框显示 [OK] 即成功,按任意键关闭)
  3. 打开 Google Earth Pro,正常使用
  4. 用完后(可选)双击 「关闭代理-恢复上网.bat」 恢复普通直连

九、注意事项与故障排查

  1. 脚本依赖蚂蚁加速器在线:开启代理后,若蚂蚁未开或掉线,gost 无法转发 → 全网断网。此时双击「关闭代理-恢复上网.bat」即可恢复直连。
  2. 使用顺序:先开蚂蚁 → 再运行开启脚本 → 再打开 Google Earth。
  3. 节点选择:选能连 Google 的节点;游戏专线可能不通 Google 网页。
  4. 相关文件均在 C:\Users\Administrator\gost-proxy\,请勿删除。

故障排查顺序(连不上时)

  1. 蚂蚁加速器是否已连接?
  2. gost.exe 进程是否在运行?(任务管理器查看)
  3. 系统代理是否为 127.0.0.1:1088 且已启用?
  4. 本机浏览器能否打开 google.com?

十、附录:文件清单与命令

文件清单

路径 作用
C:\Users\Administrator\gost-proxy\gost.exe 代理转发核心程序 (v3.3.0)
C:\Users\Administrator\gost-proxy\start-proxy.ps1 开启逻辑(UTF-8 BOM)
C:\Users\Administrator\gost-proxy\stop-proxy.ps1 关闭逻辑(UTF-8 BOM)
桌面\开启代理-用GoogleEarth.bat 一键开启入口
桌面\关闭代理-恢复上网.bat 一键关闭入口

关键命令

启动桥(手动):

1
gost -L http://127.0.0.1:1088 -F socks5://127.0.0.1:1080

开启系统代理:

1
2
3
ProxyServer = 127.0.0.1:1088
ProxyEnable = 1
注册表路径:HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings

关闭系统代理:

1
ProxyEnable = 0

彻底替代方案(可选)

如需一劳永逸,可改用支持 TUN 模式 的客户端(Clash Verge / v2rayN),导入机场订阅并开启 TUN,则所有程序(含 Google Earth)自动被代理,无需 gost 桥。前提是拥有机场订阅链接(蚂蚁加速器为成品,不一定可导出订阅)。